package com.dp1.deliversoft.entidad;

import java.util.ArrayList;

public class Mapa {

	ArrayList<Y_fila> Ys;
	int x_ancho;
	int y_alto;
	Punto almacen;

	public int getMaxX() {
		return this.x_ancho;
	}
	
	public int getMaxY() {
		return this.y_alto;
	}
	
	public X_celda getCelda(int x, int y) {
		return this.Ys.get(y - 1).getCeldas().get(x - 1);
	}
	
	public Punto getUbicacionAlmacen()
	{
		return almacen;
	}

	public void crearMapaLogico(int x, int y) {
		Ys = new ArrayList<Y_fila>();
		x_ancho = x;
		y_alto = y;
		llenarTerrenoLogico(x_ancho, y_alto);
	}

	public void colocarAlmacen(int x, int y)
	{
		
		this.almacen.setX(x);
		this.almacen.setY(y);
		getCelda(x+1, y+1).setC(Constantes.almacen);
	}
	public void colocarCasa(int x, int y, String c)
	{
		this.getCelda(x, y).setC(c);
	}
	
	public void llenarTerrenoLogico(int x, int y) {
		for (int i = 0; i < y; i++) {
			ArrayList<X_celda> columnaX = new ArrayList<X_celda>();
			Ys.add(new Y_fila(i, columnaX));
			for (int j = 0; j < x; j++) {
				Ys.get(i).getCeldas()
						.add(new X_celda(j , Constantes.terreno));
			}
		}

	}

	public void dibujarMapa() {

		System.out.print("    ");
		for (int j = 0; j < this.x_ancho; j++) {
			if (j < 10) {
				System.out.print(j  + "   ");
			} else if (j < 100) {
				System.out.print(j  + "  ");
			} else {
				System.out.print(j  + " ");
			}

		}
		System.out.println();

		for (int i = 0; i < this.y_alto; i++) {
			for (int j = 0; j < this.x_ancho; j++) {
				if (j == 0) {
					if (i < 10) {
						System.out.print(i + "   ");

					} else if (i < 100) {
						System.out.print(i);
						System.out.print("  ");
					}

				}
				System.out.print(this.getCelda(j + 1, i + 1).getC() + "   ");
			}
			System.out.println();
		}

	}

	public Mapa(int x, int y) {
		super();
		crearMapaLogico(x, y);
		this.almacen =new Punto();
	}
	
	public void reiniciarMapa()
	{
		for (int i = 0; i < this.y_alto; i++) {
			for (int j = 0; j < this.x_ancho; j++) {
				getCelda(j+1, i+1).setC(Constantes.terreno);
			}
		}
		
		getCelda(almacen.getX()+1, almacen.getY()+1).setC(Constantes.almacen);
	}

}
